/**
 * 处理响应数据
 * @param {Object} ctx - 上下文对象
 * @param {{data: any, fields: string[], message: string, error: boolean} | Object} result - 数据对象
 *   - data: 响应数据
 *   - fields: 数据表字段名数组
 *   - message: 响应消息
 *   - error: 是否报错
 * @param {string} resultType - 响应数据类型
 *   - object: 对象
 *   - array: 数组
 *   - pageList: 分页列表
 */
function responseData(ctx, result, resultType = 'object') {
	if (result.error) {
		ctx.response.status = 400;
		ctx.response.body = {
			code: 1,
			msg: result.message,
			data: result.data,
		};
	} else {
		switch (resultType) {
			case 'object':
				if (result.data?.length === 1) result.data = result.data[0];
				break;
			case 'array':
				break;
			case 'pageList':
				if (result.total) {
					result.data = {
						records: result.data.data || [],
						total: result.total.data?.[0].total || 0,
					};
				}
				break;
		}
		ctx.response.body = {
			code: 0,
			msg: result.message,
			data: result.data,
		};
	}
}

module.exports = responseData;
